Как оказалось, ответ был проще. Покопался в файлах карты, нашел wts-файл. В нем все расписано по блоках, причем содержатся все строки, даже описания новых объектов.
При локализации карты изменяется этот файл, так как из него берутся значения. Также дела обстоят и с той функцией. Она берет строку из определенного блока. Думаю, вопрос можно закрывать.
Есть проверка IsUnitDead, где проверяется тип и состояние IsUnitType(u, UNIT_TYPE_DEAD) но никогда не было проблем с проверкой хп.
Так же насколько я помню GetWidgetLife( unit ) > 0.0 или GetUnitState( unit, UNIT_STATE_LIFE ) > 0.405.
Работает только оригинал , точнее с него настройки на все остальные идут клоны спелла, настройки смотри в опен доте, так то она работ, но вот орб и ннсовместтмость с другими пассивками, это не очень.
Для начала читаем правила
Затем, новичок самостоятельно сделать эти способности не сможет, если речь идёт о мультиплеере и оптимизированном исполнении.
И тебе лучше обратиться сюда:
Drulia_san, Ну да.
Добавляешь аурку - вот тебе баф на юните. Самый простой способ как по мне.
+Можно эффекты настроить, что вполне неплохо. Пока висит фейковый баф(наша аура) - на юните есть эффект.
Через дамми касты я пробовал, но долго+муторно+подключается дамми система = +лаги и местами утечки.
Насчёт таймаута - это уже по самим спеллам, я долго мучался чтобы оно всё работало как надо и не оверлапалось
Вот такой штукой у меня удаляется баф:
public function unitRemoveAbilityandBuffBY(unit u,integer dhv,integer mLv) returns boolean
boolean b=UnitRemoveAbility(u,dhv)
UnitMakeAbilityPermanent(u,false,dhv)
UnitRemoveAbility(u,mLv)
return b
пауза не предназначена для использования в боевых условиях, вот и ловишь всякое с нею. используй станы обычные, если уж жмет, а для башен и дизарм сгодится обычный
функция FlushChildHashtable_HSD должна принимать лишь 1 параметр (инт)
либо можно так
define FlushChildHashtable(a, b) = {
if(`a` == "SYSTEM_HASHTABLE"){
FlushChildHashtable_HSD(b)
}else{
FlushChild##Hashtable(a, b)
}
}
в результате второго варианта FlushChildHashtable(hash, 5) будет заменено на
if ( "hash" == "SYSTEM_HASHTABLE" ) then
call FlushChildHashtable_HSD(5)
else
call FlushChildHashtable(hash, 5)
endif
первый вариант предпочтительнее если подобных переменных немного
второй если необходимо передавать в функцию FlushChildHashtable_HSD не только инт но и сам хэштейбл
если же тебе нужно проверять не по названию а по значению то используй 2 вариант
только вместо строк сравнивай сами переменные
Возможно, в самом ME отключено освещение, потому модели выглядят ярко (без теней). Нужны скрины моделей в игре и МЕ для сравнения. Если что, тени в МЕ включаются в Edit -> Properties > Enable Lighting в русском редакторе: Редактировать -> Свойства > Включить молнии (кек).
Я использовал такую модель для тумана. Просто белое свечение, ставил в качестве дудада, в редакторе объектов указывал оттенок (255,255,255 — белый, далее соответственно). С освещением ничего не сделаешь, да.
Атака оглушением вызывает подобную ерунду. Да и не только.
Например в доте бы вылетало сообщение 0 при атаке имея МКБ - сообщался бы урон, урон от микробаша, если бы выпал и 0.00 от нулевого критического удара.
Решение простое - поставь условие, что полученный урон больше 0.00, тогда только выводить.
А в вопросе упомянутое "всплытие" подразумевает, что текст не появляется вообще что ли?
Только при создании текста 2 раз, с первого раза не создается
Ответ найден, простите за беспокойство.
Добавил функцию ((код SetTextTagSuspended(udg_SummUnit[udg_Summ],false) ))
Спасибо за внимание!
забудь про эту наработку, она чересчур сложна для понимания простых смертных, да и на 1.26 она вроде не работала. Проще самому сделать инв чем ковыряться в ней (из личного опыта)
В 1.26 пашет,не веришь, сделай проверку карты.2)Думаю понять можна, странно то,что компилятор не видит нужных переменных.
В событии - применение способности, а в действии - атакованный юнит.
Способность - это не атака.
То есть нужно вместо атакованного юнита написать юнит-цель заклинания. И удалить утечки (точки).
Собственные попытки в студию, что не получается?
Напомним - ЭТО НЕ СТОЛ ЗАКАЗОВ, здесь задают вопросы про реализацию тех или иных вопросов, спрашивают про ошибки, оптмизацию, отдельные функции. Я не увидел в вашем вопросе ничего кроме невнятного описания механики способности, " вокргу кого то там огненные столбы возникают, и еще порча"...
Filius Dei, во вредные советы подъехали...
Русификатор очень поможет тем кто собрался ломануть чужую карту и сделать её мод, прям ваще жир...
Потом нубам вроде сударя не стоит бежать ломать чужую карту, чето там пытатся копировать - это все бесполезно, недавно был похожий вопрос - помогите взломать карту за вознаграждение, карту сломали - ну а дальше что? Он неспособен ничего сделать потому что просто не понимает как?
Играя в некую карту вы мните себя великими балансерами и картоделами, мол да чё там, шяс подправлю пару значений и все будет норм - нет не будет, это не так просто как может показаться, без понимания устройства карты и знания Jass вам нечего там делать, вы тупо ничего не сможете изменить, да даже скопировать и вставить!
Помните что без труда не выловишь и рыбку из пруда, т.е изи способов в 1 кнопку взять и запилить чужую карту так как вам хочется или вдруг стащить всех героев себе в карту нет, а уж теболее не случится так что вам кто то возьмет и все это сделает вам за спасибо...
quq_CCCP:
Спасибо, понял что надо создавать форс единожды, чтобы утечек не было
Мдаа уж, оказывается все дело в том, что забыл поставить исходные позиции другим игрокам, хорошо хоть проверить догадался, засиделся за редактором
Ну более менее муторный вариант: Делаем пасивку пустышку
Действие: юнит атакован
Условие: атакующий юнит имеет способность ту или ту :D
Действие: устонавливаем переменную как рандомное число и потом если/то/иначе функцию(сам думаю поймёшь как) :DD
я тебя понял, побежал проверять :)
Печать преисподней отлично подходит!
при конвертации в способность "неульту" теряется также способность пробивать имунных к магии существ - Печать преисподней - других возможных аналогов я не нашел
решением проблемы является способность Ловчий
Здесь всё не так.
Множество ошибок, нераскрытые BJ и прочее.
Если у тебя JNGP, то при компилляции он должен выдавать много ошибок, по ним можно легко всё исправить (достаточно поверхностного знания английского языка)
тебе проще будет заказать такой спелл в барахолке и уже потом изучать то что тебе сделают.
Если у вас не анло-язычный jpng, а xgm'ский(5d), то это бесполезно. Всегда будет ночь, лучше попробуйте новую сборку jpng: Jass New Gen Pack - Rebuild 1.3 , надеюсь поможет.
"В личном порядке".
Занесена базовая атака героя, учтено, сколько книжек на урон герой "съел", какие способности изучил, какие предметы одел, в идеале - какие баффы какого уровня получил. Хотя скорее всего описание врёт и сделано всё попроще - от главного атрибута или типа того, чтобы примерно равнялось 50% атаки. Если нужен костыль такого заклинания - могу скинуть, но надёжность оставляет желать лучшего. Но в наработке исправно наносится в заклинании урон по величине атаки героя, правда без учета баффов и преметов, только уровня. Farrien:
У меня появилась идея,
Если нужно -могу подогнать системку, ловящую перехват смены приказа, она не блещет точностью, но абузить шансовые эффекты точно не получится.
SetUnitPosition довольно тяжелая операци, юзайте SetUnitX\Y в конце полета юзай SetUnitPosition для того чтобы юнит не залетел в непроходимое место.
Фильтр просто ужас, ну кто так фильтры делает?
Проверка на 'Aloc', я в ужасе на кой черт проверять на дамми если GropEnumUnitsInRange\Rect не выделяет москитов, тока EnumOfPlayer может пикнуть москитов, остальное не пикает их, на то они и москиты...
Вот как выглядит нормальный фильтр без локалок и прочего
function EnemyFilter takes nothing returns boolean
set bj_lastFilterUnit = GetFilterUnit( )
return GetUnitState( bj_lastFilterUnit, UNIT_STATE_LIFE ) > 0.405 and IsUnitEnemy( bj_lastFilterUnit, bj_groupEnumOwningPlayer ) and not( IsUnitType( bj_lastFilterUnit, UNIT_TYPE_MAGIC_IMMUNE ) or IsUnitType( bj_lastFilterUnit, UNIT_TYPE_MECHANICAL ) or IsUnitInvulnerable( bj_lastFilterUnit ) )
endfunction
UnitDamageTargetEx - красиво но нафиг ненужно обводить в отдельную функцию с тучей аргументов + жутко неудобно, 100500 аргументов у функции и фиг знает за что какой от вечает, прямо так UnitDamageTarget, без отдельной функции.
Туча констант, тоже хорошо тока длят наработок, на деле ставь конкретные значения или юзай Difine vjass'a.
Если я не ошибаюсь, это происходит из-за подгрузки способностей в той самой книге. Можно дать эту способность какому-нибудь юниту и поместить его на игровом поле, что подгрузка этих способностей происходила во время инициализации карты.
Лимит операций, обычно это беда настигает заядлых гуишников.
На jass обычно нету таких проблем.
Создайте таймер с периодом .00 сек и запускайте им функции инициализации триггеров.
функция типа InitTrig_Имя триггера - это функция инициализации триггера, она вызывается из функции InitCustomTriggers, но если этих вызовов очень много то функция упирается в лимит операций и поток завершается так и не создав все триггеры.
Потому что вы блокируете мультишот. Запрет спеллбука не запрещает способности, находящиеся в нем. Но запрет самих способностей, внезапно, запрещает их.
Нашёл систему, где звук передаётся в таймер, который истекает через 0 секунд. В результате один и тот же звук может проигрываться несколько раз без всяких проблем. В инетике пишут мол это такой баг движка.
Как объединить зелья лечения в одно с зарядом, если герой имеет одно в инвентаре и поднимает второе?
обычно используют "событие - юнит получает предмет", И на предмет, который вы получаете, ссылается переменная, которая называется item being manipulated. А юнит, который получает итем - Triggering Unit. Вы можете с помощью этой переменной итема узнать тип, сравнить. Потом циклом пробегаете по слотам (от 1 до 6), тут вся суть в одной команде триггерной (item in slot X, итем в слоте Х) и проверяете есть ли такой же итем (не забываем делать проверки, на то что этот предмет не равен item being manipulated и сравниваете не одинаковые ли типы). Если есть такой же (находите тот же тип что и item being manipulated), то от item being manipulated берете заряды и прибавляете к зарядам существующего, а потом item being manipulated удаляете. Недостаток: при заполненном инвентаре такая штука не будет работать.Не хватает свободного места.
код
цикл А от 1 до 6
if тип итема (item being manipulated) РАВНО тип итема (item in slot А) and item being manipulated НЕ РАВНО item in slot А then проверяете
set k = Charges remaining in ( item being manipulated) + Charges remaining in ( item in slot А) складываете заряды
Set charges remaining in ( item in slot А) to ( k) устанавливаете кол-во зарядов
Remove Item (item being manipulated) удаляете
endif
Есть гуишная проверка на наличие итема определенного типа в инвентаре, но она утечна. И лучше циклом прогонять.
Кстати выше пример, там вот дропают итем, зачем? чтобы проверить есть ли такой же итем. А то мб проверка на наличие итема определенного типа в инвентаре найти подобранный итем. А нам нужно знать, что есть еще один, кроме подобранного. Поэтому дропают. Только не понятно зачем создаете новый итем.
Проверка, на то что подобранный предмет имеет зарядов больше 0, говорит нам о том что это не обычный предмет.
есть статьи
Как зелье с зарядом разделить, если игрок перекладывает зелье с зарядом в другую ячейку инвентаря, если возможно, то разделение происходить должно только при нажатии какой-то клавиши?
можно перекладывать в другой слот. для этого ловят приказ. Короче смотрите системы CCS
там создают новый такой же предмет, и выделяют кол-во зарядов, деля поровну например. Абилкой например, попробуй сделать целевую активную абилку с целью предмет, указывай на инвентарь и дели.
Как это можно сделать покороче для множества разных типов предметов?
всмысле покороче? сделать под одну группу? есть же классификация. Я вот делаю так, что все предметы, которые с зарядами, должны иметь классификацию "с зарядами". Не помню точно как называется класс итемов.
Как правильно реализовать в инвентаре 7 слот?
если у героя заполнен инвентарь, то он может подобрать руну. Вот в доте система скрещивания. То же самое можно сделать и с зарядами. На земле у него лежат руны, при подборе руна исчезает. Но мы проверяем слоты, есть ли такой итем. Если есть, прибавляем заряды к существующему. Иначе создать новый. При дропе итема, оригинал подменяет снова на руну. В руну можно передать значения зарядов.
А также ограничения какие-то на количество зарядов нужно ставить или сама система выше какой-то планки не даст собирать?
до такого не доходил.
скинул примеры (хотя многие дурацкие, но делал здесь хгм в качестве ответов)
вот еще одна система hh
Хм, сделав вот это, я добился разброса урона. Он работал только тогда, когда работало улучшение "Громовой молот". Правда, я так и не понял, какой именно параметр сделал это. Правда, он вроде бы бил по своим все равно. Надо будет покопаться в этом и попытать дать этой фигне какой-нибудь эффект для видимости.
Для видимости можно поставить в графу Графика - Цель какой-нибудь эффект, он будет срабатывать на всех дополнительных целях. А чтобы он по своим не бил, надо поставить в графу Радиус поражения - Цели, нужные тебе типы юнитов, по которым будет проходить эта атака.
8gabriel8, стандартные порталы как раз включаются триггером, так же триггерно им можно назначать области телепорта, так же они не ломают карту путей.
Насчет упираются в здание, карту путей ставь от портала, физ размер в 0.
» WarCraft 3 / Локализация
» WarCraft 3 / Помогите с редактором MDL.
» Администрация XGM / Раздел - Прочие вопросы
» WarCraft 3 / Как сделать чтобы модель появилась?
» WarCraft 3 / Проблема с способностями
» WarCraft 3 / Способность босса
» WarCraft 3 / Как сделать количество использования у способности?
» WarCraft 3 / Удаление всех юнитов игрока
» WarCraft 3 / Cjass
» WarCraft 3 / Модели видно в отсутствии освещения
» WarCraft 3 / Текст над юнитом
» WarCraft 3 / Как воспроизвести анимацию, не разрушаемой декорации?
» WarCraft 3 / Помогите с тригерами
» WarCraft 3 / Триггеры
» WarCraft 3 / Выбирается юнит который не выбран
» WarCraft 3 / Анимация при срабатывании пассивки
» WarCraft 3 / Пустышка - цель - юнит
» WarCraft 3 / call DestroyTrigger( GetTriggeringTrigger() )
» WarCraft 3 / Как снять ограничение
» WarCraft 3 / Отменить эффект стана
» WarCraft 3 / EVENT_PLAYER_HERO_SKILL
» WarCraft 3 / Свап хп - не могу разобраться
» WarCraft 3 / запустить таймер из таймера
» WarCraft 3 / массив типа предметов
» WarCraft 3 / Как работает «Способности - Способность по умолчанию» ?